﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Persistencia;
using Persistencia.Interfaces;
namespace GestorDeFlotasModelo.Entities
{
    public partial class Cliente : IPersistibleModelo, IIdentityEntity
    {
        PersistibleDB persistible;
        #region Miembros de IPersistibleModelo

        void IPersistibleModelo.CargarParametrosClave(HashTableNCSensitive parameters)
        {
            parameters.Add("Cliente_Id", this.Id);
        }

        void IPersistibleModelo.CargarParametrosNoClave(HashTableNCSensitive parameters)
        {
            parameters.Add("Cliente_Nombre", this.Nombre);
            parameters.Add("Cliente_Apellido", this.Apellido);
            parameters.Add("Cliente_Dni", this.Dni);
            parameters.Add("Cliente_Telefono", this.Telefono);
            parameters.Add("Cliente_Mail", this.Mail);
            parameters.Add("Cliente_Direccion", this.Direccion);
            parameters.Add("Cliente_CodiPostal", this.CodigoPostal);
            parameters.Add("Cliente_Fecha_Nac", this.FechaNacimiento);
            parameters.Add("Cliente_Habilitado", this.Habilitado);
        }

        void IPersistibleModelo.Cargar(HashTableNCSensitive hts)
        {
            if (hts["Cliente_Id"] != null) 
                this.Id = int.Parse(hts["Cliente_Id"].ToString());

            this.Nombre = (hts["Cliente_Nombre"].ToString());
            this.Apellido = (hts["Cliente_Apellido"].ToString());
            this.Telefono = long.Parse(hts["Cliente_Telefono"].ToString());
            if(hts["Cliente_Mail"] != null)
                this.Mail = (hts["Cliente_Mail"].ToString());
            if(hts["Cliente_Direccion"] != null)
                this.Direccion = (hts["Cliente_Direccion"].ToString());
            this.Dni = long.Parse(hts["Cliente_Dni"].ToString());
            if(hts["Cliente_CodiPostal"] != null)
                this.CodigoPostal = hts["Cliente_CodiPostal"].ToString();
            this.FechaNacimiento = DateTime.Parse(hts["Cliente_Fecha_Nac"].ToString()); 
            if(hts["Cliente_Habilitado"] != null)
                this.Habilitado = bool.Parse(hts["Cliente_Habilitado"].ToString());
            if (hts["Recaudacion"] != null)
                this.monto = double.Parse(hts["Recaudacion"].ToString());
        }

        void IPersistibleModelo.AntesInsert() { }

        void IPersistibleModelo.AntesUpdate() { }

        void IPersistibleModelo.AntesDelete() { }

        void IPersistibleModelo.DespuesInsert() { }

        void IPersistibleModelo.DespuesUpdate() { }

        void IPersistibleModelo.DespuesDelete() { }

        string IPersistibleModelo.HashDatos
        {
            get { return this.Id+this.Nombre+this.Apellido+this.Telefono+this.Mail+this.Direccion+this.Dni+this.CodigoPostal+this.FechaNacimiento.ToShortDateString()+this.Habilitado; }
        }

        PersistibleDB IPersistibleModelo.Persistible
        {
            get
            {
                return this.persistible;
            }
            set
            {
                this.persistible = value;
            }
        }

        #endregion

        #region Miembros de IIdentityFactory

        long IIdentityEntity.Id
        {
            get
            {
                return this.Id;
            }
            set
            {
                this.Id = value;
            }
        }

        #endregion

        #region Miembros de IPersistible

        void IPersistible.Insert()
        {
            this.persistible.Insert();
        }

        void IPersistible.Update()
        {
            this.persistible.Update();
        }

        void IPersistible.Delete()
        {
            this.persistible.Delete();
        }

        #endregion
    }
}
